1 Introduction

Salbutamol is a short-acting beta-agonist (SABA) which is most commonly prescribed to patients with asthma or COPD. This inhaler relaxes the smooth muscle and dilates the airway, reducing asthmatic symptoms(1). It is important to understand the trends in prescriptions across seasons and health boards as it can help to better assess asthma control in patients, as well as identifying any potential health inequalities between health boards/regions.

The aim of this report was to investigate the changes in prescriptions of salbutamol inhalers in Scotland in the year 2024, with a focus on variations across the different seasons and across the health boards.

Since salbutamol inhalers are most commonly prescribed to patients with asthma or COPD, we would expect to see a greater number of prescriptions in the winter months as the colder air can worsen the respiratory symptoms of these conditions, and the spread of respiratory viruses can also cause breathing problems(2).

In accordance with seasonal weather in Scotland(3), the data from the 12 months was grouped into 4 season: Spring (March - May), Summer (June - August), Autumn (September - November) and Winter (December - February).

Here are the sources of the data files used in this report:

We can find the January - June 2024 prescriptions file and its specific data dictionary here: https://www.opendata.nhs.scot/dataset/prescriptions-in-the-community/resource/f0df380b-3f9b-4536-bb87-569e189b727a

data_jan_jun_2024 <- read_csv("https://www.opendata.nhs.scot/dataset/84393984-14e9-4b0d-a797-b288db64d088/resource/f0df380b-3f9b-4536-bb87-569e189b727a/download/hb_pitc2024_01_06-1.csv") %>% 
  clean_names()

We can find the July - December 2024 prescriptions file and its specific data dictionary here: https://www.opendata.nhs.scot/dataset/prescriptions-in-the-community/resource/f3b9f2e2-66c0-4310-9b8e-734781d2ed0a

data_jul_dec_2024 <- read_csv("https://www.opendata.nhs.scot/dataset/84393984-14e9-4b0d-a797-b288db64d088/resource/f3b9f2e2-66c0-4310-9b8e-734781d2ed0a/download/hb_pitc2024_07_12-1.csv") %>% 
  clean_names()

We can find the Health Board names dataset and its specific data dictionary here: https://www.opendata.nhs.scot/dataset/geography-codes-and-labels/resource/652ff726-e676-4a20-abda-435b98dd7bdc

HB_lookup <- read_csv("https://www.opendata.nhs.scot/dataset/9f942fdb-e59e-44f5-b534-d6e17229cc7b/resource/652ff726-e676-4a20-abda-435b98dd7bdc/download/hb14_hb19.csv") %>% 
  clean_names()

We can find the NHS Health Boards geographical datasets here: https://www.data.gov.uk/dataset/27d0fe5f-79bb-4116-aec9-a8e565ff756a/nhs-health-boards-scotland

NHS_healthboards <- st_read(here("data", "SG_NHS_HealthBoards_2019.shp"))

We can find the population datasets by health board here: https://statistics.ukdataservice.ac.uk/dataset/scotland-s-census-2022-uv102a-age-by-sex

population_data <- read_csv(here( "data", "UV102a_age_health_board_census.csv"), skip = 10) %>% 
  # Last column renamed to match column names with the prescription dataset
  rename(Spare = "...6",
         hb_name = "Health Board Area 2019",
         hb_population = Count) %>% 
  # Data filtered so that we get the population of the entire health board
  filter(Age == "All people" & Sex == "All people") %>% 
  # Only the relevant columns selected
  select(hb_name, hb_population) %>% 
  # Health Board names changed so they match the prescription data
  mutate(hb_name = paste("NHS", hb_name))
#Two data files for 2024 prescriptions combined so data for all 12 months are in one dataset
combined_data_2024 <- bind_rows(data_jan_jun_2024, data_jul_dec_2024) %>% 
  clean_names() %>% 
  full_join(HB_lookup, by = c("hbt" = "hb")) %>%
  select(hb_name, hbt:paid_date_month) %>% 
  #Data filtered to only include rows where health board name is available (therefore excluding 'SB0806' as this is ambulance data, not health board data)
  filter(!is.na(hb_name)) %>%
  #Dataset joined with population data for calculating prescriptions per 1,000 people
  full_join(population_data, by = join_by(hb_name)) %>% 
  #Season column created with the months data grouped into four seasons
  mutate(season = case_when(paid_date_month %in% c(202403, 202404, 202405) ~ "Spring", paid_date_month %in% c(202406, 202407, 202408) ~ "Summer", paid_date_month %in% c(202409, 202410, 202411) ~ "Autumn", paid_date_month %in% c(202412, 202401, 202402) ~ "Winter"))
#Salbutamol and brand names for salbutamol selected in the prescriptions dataset
salbutamol_inhalers <- c("SALBUTAMOL", "AIROMIR", "ASMALAL", "SALAMOL", "SALBULIN", "VENTOLIN")

salbutamol_inhaler_data <- combined_data_2024 %>%
  #Salbutamol drug selected
  filter(str_detect(bnf_item_description, paste(salbutamol_inhalers, collapse = "|"))) %>%
  #Only inhalers selected from salbutamol data
  filter(str_detect(bnf_item_description, "HALER"))

2 Results

All of the data files were used to produce the following results consisting of a summary table, graphs and a map.

2.1 Summary Table

2.1.1 Table 1

#A summary table is created with health board name, health board population, total number of prescriptions in each health board, and number of prescriptions per 1,000 people in each health board
salbutamol_inhaler_data_table <- salbutamol_inhaler_data %>%
  group_by(hb_name, hb_population) %>% 
  summarise(total_quantity = sum(paid_quantity), quantity_per_1k = (sum(paid_quantity)/mean(hb_population))*1000) %>% 
  ungroup() %>% 
  gt() %>% 
  tab_header(title = "Prescription of Salbutamol Inhalers across NHS Health Boards in 2024") %>% 
  tab_source_note(source_note = "Source: 2024 Prescription datasets from the NHS OpenData sources, Health Board Population data from  Scotland's Census Data in UK Data Service source") %>% 
  cols_label(hb_name = "Health Board", hb_population = "Health Board Population", total_quantity = "Total Prescriptions", quantity_per_1k = "Salbutamol Inhaler Prescriptions Per 1,000 people") %>% 
  #The line below removes decimal points from the stated columns
  fmt_number(columns = c(hb_population, total_quantity, quantity_per_1k), decimals = 0) %>% 
  opt_stylize()
salbutamol_inhaler_data_table
Prescription of Salbutamol Inhalers across NHS Health Boards in 2024
Health Board Health Board Population Total Prescriptions Salbutamol Inhaler Prescriptions Per 1,000 people
NHS Ayrshire and Arran 365,256 42,769,492 117,095
NHS Borders 116,821 13,217,303 113,141
NHS Dumfries and Galloway 145,895 20,028,250 137,279
NHS Fife 371,781 45,347,477 121,974
NHS Forth Valley 302,784 33,738,374 111,427
NHS Grampian 581,040 47,170,727 81,183
NHS Greater Glasgow and Clyde 1,177,213 142,058,273 120,673
NHS Highland 321,321 32,036,639 99,703
NHS Lanarkshire 668,027 82,466,769 123,448
NHS Lothian 904,628 79,563,390 87,952
NHS Orkney 21,958 1,540,206 70,143
NHS Shetland 22,986 1,771,040 77,049
NHS Tayside 413,992 46,360,276 111,984
NHS Western Isles 26,140 2,938,589 112,417
Source: 2024 Prescription datasets from the NHS OpenData sources, Health Board Population data from Scotland's Census Data in UK Data Service source

This table summarises the total number of salbutamol inhalers prescribed across each health board in 2024, as well as the corresponding number per 1,000 people.

There is a clear correlation between health board population and total number of prescriptions. Therefore, to adjust for population as a potential confounding variable, the number of prescriptions are reported per 1,000 people in the following figures.

2.2 Graphs

#Function for making line graphs (as 2 separate line graphs are reported) so ggplot code is not repeated
make_line_graph <- function(df, title, subtitle = NULL, facet = FALSE) {
  seasonal_plot <- ggplot(df, aes(x = season, y = total_quantity_per_1k, group = if (facet) hb_name else 1,
      #Text shown when hovering over Figure 1 (using plotly)
      text = paste("Season: ", season, "<br>", "Total Prescriptions per 1,000: ",
      #Adds commas and removes decimal points in prescriptions per 1,000 people
      scales::comma(total_quantity_per_1k, accuracy = 1))))+
    geom_line(color = "green", linewidth = 1) +
    geom_point() +
    labs(x = "Season", y = "Total Salbutamol Prescriptions per 1,000 people", title = title, subtitle = subtitle) +
    #The line below creates limits in the y-axis values so number of prescriptions can be compared between health boards in Figure 2 as opposed to just trends being compared
    scale_y_continuous(limits = c(16000, 36000)) +
    theme_bw() +
    theme(axis.text.x = element_text(angle = 45, hjust = 1))

  #Code needed for Figure 2 where graphs are faceted by health board
  if (facet) {seasonal_plot <- seasonal_plot + 
      facet_wrap(~ hb_name, ncol = 3, scales = "free")}
  return(seasonal_plot)
  }

2.2.1 Figure 1

#Total population of Scotland calculated
total_population_scotland <- population_data %>%
  summarise(total_population = sum(hb_population, na.rm = TRUE)) %>%
  pull(total_population)

#Total number of prescriptions across the four seasons in Scotland
seasonal_totals <- salbutamol_inhaler_data %>%
  mutate(season = factor(season, levels = c("Spring", "Summer", "Autumn", "Winter"))) %>% 
  group_by(season) %>%
  summarise(total_quantity = sum(paid_quantity, na.rm = TRUE))

#Total prescriptions per 1,000 people in Scotland
salbutamol_prescriptions_2024 <- seasonal_totals %>%
  mutate(total_quantity_per_1k = (total_quantity / total_population_scotland) * 1000)

#Uses prior function to make plot of Scotland prescription data
scotland_plot <- make_line_graph(salbutamol_prescriptions_2024, title = "Seasonal Salbutamol Prescriptions per 1,000 people in 2024")

#Plotly used to allow for data to be observed while hovering over graph
scotland_plotly <- ggplotly(scotland_plot, tooltip = c("text")) %>% 
  config(displayModeBar = FALSE) %>%  #The mode bar is not required and obstructed the title
  layout(width = 300, height = 300)
scotland_plotly

The above graph shows the prescriptions of salbutamol inhalers in Scotland throughout the 4 seasons (spring, summer, autumn and winter) in 2024.

There is a visible increase in the number of salbutamol inhaler prescriptions during the winter months compared to the other seasons. However, it would be useful to distinguish between the NHS Health Boards to determine whether this trend is seen across all regions of Scotland.

2.2.2 Figure 2

#calculates total number of prescriptions per 1,000 people for each health board to allow for faceted graphs to be produced
seasonal_hb_totals <- salbutamol_inhaler_data %>%
  group_by(hb_name, season) %>% 
  summarise(total_quantity = sum(paid_quantity, na.rm = TRUE), population = mean(hb_population, na.rm = TRUE)) %>% 
    mutate(season = factor(season, levels = c("Spring", "Summer", "Autumn", "Winter"))) %>% 
  mutate(total_quantity_per_1k = (total_quantity / population) * 1000)

#Uses prior function to make faceted graphs
health_board_plot <- make_line_graph(seasonal_hb_totals, title = "Seasonal Salbutamol Prescriptions by Health Board", subtitle = "Prescriptions per 1,000 people", facet = TRUE)
health_board_plot

To further analyse the potential correlation between seasons and prescribing of salbutamol inhalers, the above graphs were produced. Each graph shows the trends in salbutamol inhaler prescriptions across the 4 seasons for each of the 14 health boards.

These graphs allow for comparisons in the seasonal trends in prescriptions between health boards. Similarly to the trend shown in Figure 1, the majority of health boards see increases in prescriptions during the winter season.

From this data we can see, similar to the previous graph showing total salbutamol prescriptions across Scotland, that the majority of health boards observe increases in prescriptions during the winter season. The greatest increase in winter prescriptions is seen in NHS Forth Valley. There are also high levels in spring for the Orkney, Shetland, Tayside and Western Isle health boards, possibly due to ongoing cold weather conditions.

Accessibility to GP’s and Pharmacies could influence the number of prescriptions in certain health boards. Worth noting is that NHS Shetland sees its lowest number of prescriptions in winter. With the available data, it is difficult to determine the cause of this observation. However, further studies could potentially investigate other influential factors to better understand this trend in NHS Shetland.

Overall, from Figure 1 and Figure 2, there appears to be a correlation between seasons and salbutamol prescriptions, with increased prescriptions observed in winter. This aligns with our expectations as colder weather can worsen asthma symptoms, and increase the need for salbutamol inhalers.

2.3 Map

2.3.1 Figure 3

#Joins salbutamol inhaler data with NHS healthboards geographical data for making a map shwoing number of prescriptions per 1,000 people in each health board
salbutamol_inhaler_map_data <- NHS_healthboards %>%
  full_join(salbutamol_inhaler_data, 
            by = join_by(HBCode == hbt)) %>% 
  filter(!is.na(HBName)) %>% 
  group_by(HBName, season, hb_population) %>% 
  summarise(paid_quantity = sum(paid_quantity)) %>% 
  mutate(quantity_per_1k = (paid_quantity/hb_population)*1000)

#Makes a visual map showing number of prescriptions per 1,000 people in each health board
map_salbutamol_inhaler_per_1k <- salbutamol_inhaler_map_data %>%
  ggplot(aes(fill = quantity_per_1k)) +
  geom_sf(colour = "black", size = 0.1) +
  coord_sf(lims_method = "geometry_bbox") +
  scale_fill_distiller(palette = "Greens", direction = 1, name = "No. of Prescriptions per 1,000 people", labels = scales::comma_format()) +
  #The above line includes commas in the no. of prescriptions per 1,000 people on the right hand side, making it look nicer
  labs(title = "Salbutamol Inhaler Prescriptions by Health Board in 2024", subtitle = "Prescriptions per 1,000 people") +
  theme_void() +
  theme(plot.title = element_text(face = "bold", size = 16), plot.subtitle = element_text(size = 8))  

map_salbutamol_inhaler_per_1k 

This map shows the number of prescriptions of salbutamol inhalers in each health board in 2024 (not separated by season). There appears to be more salbutamol prescriptions in health boards closer to the south. This is surprising since residents in the colder, northern regions would be expected to have more asthmatic symptoms requiring more salbutamol inhalers(4).

A potential explanation could be that more densely populated and industrial areas produce more air pollution which can trigger asthmatic symptoms, and in turn increase prescriptions of salbutamol.

Variations in accessibility to healthcare and GPs between the northern and southern regions could also contribute to this trend, with potentially more efficient assessment, diagnosis and treatment available in southern regions. Scottish Index of Multiple Deprivation (SIMD) scores and socioeconomic status across health boards could also contribute to the observed trend.

3 Conclusions

From the data presented in this report, there is a clear correlation between seasons and salbutamol inhaler prescriptions in Scotland as a whole, with increased prescriptions during the winter season. This trend was seen across the NHS health boards, with exceptions in NHS Shetland and NHS Western Isles, where the number of prescriptions decreased in winter months. While it is difficult to explain why this is the case with the above data, it is possibly due to the effect of some confounding variables. For example, socioeconomic status and SIMD scores in different health boards may affect patient accessibility to prescriptions and inhalers(5). Additionally, only data for 2024 was included.

The map yielded surprising results with residnets in warmer regions needing more inhalers as opposed to in colder climates further north. Regarding potential next steps, further investigations could look at the SIMD scores to understand if the socioeconomic status influences salbutamol prescriptions. It might also be useful to research further into seasonal trends throughout other years, as well as other influencing factors.

There are no datasets for asthma or COPD prevalence in the ‘Public Health Scotland’ website (https://www.opendata.nhs.scot/). If such data were to become available, the seasonal influences in prescriptions could be further investigated for these conditions. Since salbutamol inhalers are primarily prescribed for asthma and COPD, it would be useful to investigate whether seasonal changes affect the number of prescriptions for one condition more than the other.

4 References

1.Marques L, Vale N. Salbutamol in the management of asthma: A review. International Journal of Molecular Sciences [Internet]. 2022;23(22). Available from: https://pmc.ncbi.nlm.nih.gov/articles/PMC9696300/

2.Review your asthma and your inhalers this winter! :: NHS Hampshire and Isle of Wight [Internet]. NHS Hampshire and Isle of Wight. 2023. Available from: https://www.hantsiow.icb.nhs.uk/news/review-your-asthma-and-your-inhalers-winter

3.Weather in Scotland | Scotland.org [Internet]. Scotland. Available from: https://www.scotland.org/about-scotland/weather

4.Met Office. UK regional climates [Internet]. Met Office. Met Office; 2019. Available from: https://www.metoffice.gov.uk/research/climate/maps-and-data/regional-climates/index

5.Julius E, Backer V, Charlotte Suppli Ulrik. Socioeconomic status is associated with healthcare seeking behaviour and disease burden in young adults with asthma – A nationwide cohort study. 2022 Jan 1;19:147997312211172-147997312211172.